﻿#ifndef __GRAPH_GAME_SCENE_H__
#define __GRAPH_GAME_SCENE_H__

#include "GraphAbstract.h"

/**
    \brief Класс для игрового слоя. Используется в качестве основного слоя игровой сцены GrGameScene.
    \see GrGameScene
 */
class GrGameLayer : public CCLayer
{
public:
    GrGameLayer();
    ~GrGameLayer();
    /* Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone */
    //virtual bool init();

    /** \brief Виртуальная функция для события входа в сцену. */
    virtual void onEnter();

    virtual void draw();

    /** Обновляет информацию в игровой сцене. */
    void updateScene( ccTime delta );

    /** Реализуем статический метод "static node()" вручную. */
    LAYER_NODE_FUNC( GrGameLayer );
};

/**
    \brief Класс игровой сцены. Использует слой GrGameLayer.
    \see GrGameLayer
 */
class GrGameScene : public GrSceneAbstract
{
public:
    GrGameScene( bool showMenuBtn = false );
    
    /** \brief Переопределение функции начальной подготовки сцены. */
    virtual void prepareScene();

    /** \brief Переопределение функции запуска сцены. */
    virtual void runScene();

    /** \brief Переопределение функции возврата в главное меню. */
    virtual void mainMenu();
};

/**
    \brief Класс подтверждения возврата в главное меню.
 */
class GrBreakGameConfirmLayer : public CCLayerColor
{
public:
	GrBreakGameConfirmLayer( CCSize &size );
	~GrBreakGameConfirmLayer();

    /** \brief Колбэк функция подтверждения действия о прерывании игры. */
	void onYesCallback( CCObject* pSender );

    /** \brief Колбэк функция возврата в игру. */
	void onNoCallback( CCObject* pSender );
};

/* Глобальный флаг индикации того, что игра приостановлена. */
extern bool g_gamePaused;

#endif /* __GRAPH_GAME_SCENE_H__ */
